package models

import (
	"gorm.io/gorm"
	"time"
)

type User struct {
	ID             uint64    `gorm:"primaryKey;column:id" json:"id"`
	Password       string    `gorm:"size:100;not null" json:"password"`
	Avatar         string    `gorm:"size:255" json:"avatar"`
	Status         int8      `gorm:"default:0" json:"status"` // 用户状态：0正常，1禁用
	Phone          string    `gorm:"size:20;unique" json:"phone"`
	RegisterTime   time.Time `gorm:"column:register_time;type:datetime;default:CURRENT_TIMESTAMP" json:"register_time"`
	BanTime        time.Time `gorm:"column:ban_time;type:datetime" json:"ban_time"`
	FollowersCount int       `gorm:"default:0" json:"followers_count"`
	FollowingCount int       `gorm:"default:0" json:"following_count"`
	IsHidden       bool      `gorm:"default:false" json:"is_hidden"`
	Nickname       string    `gorm:"size:50" json:"nickname"`
	Email          string    `gorm:"size:100;unique" json:"email"`
	Signature      string    `gorm:"size:255" json:"signature"`
}

func (u *User) BeforeCreate(tx *gorm.DB) (err error) {
	if u.RegisterTime.IsZero() {
		u.RegisterTime = time.Now()
	}
	return nil
}

// TableName 指定表名
func (User) TableName() string {
	return "user"
}
